home *** CD-ROM | disk | FTP | other *** search
/ ftp.mactech.com 2010 / ftp.mactech.com.tar / ftp.mactech.com / thinkref / archive / THINKPascalUH2.1.sea / THINKPas Univ Hdr 2.1 / Interfaces / Timer.p < prev    next >
Text File  |  1995-09-13  |  2KB  |  105 lines

  1. { Converted with MPW2TPas Tuesday, September 12, 1995 11:00:12 PM }
  2. {
  3.      File:        Timer.p
  4.  
  5.      Contains:    Time Manager interfaces.
  6.  
  7.      Version:    Technology:    System 7.5
  8.                  Package:    Universal Interfaces 2.1 in “MPW Latest” on ETO #18
  9.  
  10.      Copyright:    © 1984-1995 by Apple Computer, Inc.
  11.                  All rights reserved.
  12.  
  13.      Bugs?:        If you find a problem with this file, use the Apple Bug Reporter
  14.                  stack.  Include the file and version information (from above)
  15.                  in the problem description and send to:
  16.                      Internet:    apple.bugs@applelink.apple.com
  17.                      AppleLink:    APPLE.BUGS
  18.  
  19. }
  20.  
  21.  UNIT Timer;
  22.  INTERFACE
  23.  
  24.  
  25. {$IFC UNDEFINED __TIMER__}
  26. {$SETC __TIMER__ := 1}
  27.  
  28.   USES
  29.    ConditionalMacros, Types, OSUtils;
  30.  
  31. { $PUSH}
  32. { $ALIGN MAC68K}
  33. { $LibExport+}
  34.  
  35. CONST
  36. { high bit of qType is set if task is active }
  37.     kTMTaskActive                = $8000;
  38.  
  39.     
  40. TYPE
  41.     TMTaskPtr = ^TMTask;
  42.  
  43.     {
  44.         TimerProcPtr uses register based parameters on the 68k and cannot
  45.         be written in or called from a high-level language without the help of
  46.         mixed mode or assembly glue.
  47.  
  48.         In:
  49.          => tmTaskPtr       A1.L
  50.     }
  51.     TimerProcPtr = Register68kProcPtr;  { register PROCEDURE Timer(tmTaskP: TMTaskPtr); }
  52.     TimerUPP = UniversalProcPtr;
  53.  
  54.     TMTask = RECORD
  55.         qLink:                    QElemPtr;
  56.         qType:                    INTEGER;
  57.         tmAddr:                    TimerUPP;
  58.         tmCount:                LONGINT;
  59.         tmWakeUp:                LONGINT;
  60.         tmReserved:                LONGINT;
  61.     END;
  62.  
  63.  
  64. PROCEDURE InsTime(tmTaskPtr: QElemPtr);
  65.     {$IFC NOT GENERATINGCFM}
  66.     INLINE $205F, $A058;
  67.     {$ENDC}
  68. PROCEDURE InsXTime(tmTaskPtr: QElemPtr);
  69.     {$IFC NOT GENERATINGCFM}
  70.     INLINE $205F, $A458;
  71.     {$ENDC}
  72. PROCEDURE PrimeTime(tmTaskPtr: QElemPtr; count: LONGINT);
  73.     {$IFC NOT GENERATINGCFM}
  74.     INLINE $201F, $205F, $A05A;
  75.     {$ENDC}
  76. PROCEDURE RmvTime(tmTaskPtr: QElemPtr);
  77.     {$IFC NOT GENERATINGCFM}
  78.     INLINE $205F, $A059;
  79.     {$ENDC}
  80. PROCEDURE Microseconds(VAR microTickCount: UnsignedWide);
  81.     {$IFC NOT GENERATINGCFM}
  82.     INLINE $A193, $225F, $22C8, $2280;
  83.     {$ENDC}
  84. CONST
  85.     uppTimerProcInfo = $0000B802; { Register PROCEDURE (4 bytes in A1); }
  86.  
  87. FUNCTION NewTimerProc(userRoutine: TimerProcPtr): TimerUPP;
  88.     {$IFC NOT GENERATINGCFM }
  89.     INLINE $2E9F;
  90.     {$ENDC}
  91.  
  92. PROCEDURE CallTimerProc(tmTaskP: TMTaskPtr; userRoutine: TimerUPP);
  93.     {$IFC NOT GENERATINGCFM}
  94.     {To be implemented:  Glue to move parameters into registers.}
  95.     {$ENDC}
  96.  
  97. { $ALIGN RESET}
  98. { $POP}
  99.  
  100. {$ENDC} {__TIMER__}
  101.  
  102.  IMPLEMENTATION
  103.  END.
  104.  
  105.